# -*- coding: utf-8 -*-
"""
openworship - Open Source Church Service Management
Copyright (c) 2008 Kevin Landers

Portions copyright (c) 2008 Raoul Snyman, Joshua Biagio, Michael Lucas and
Scott Guerrieri

This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.

This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
"""

"""
The application's model objects
"""

from sqlalchemy.orm import scoped_session, sessionmaker, mapper, relation, backref

from openworship.model import meta
from openworship.model.classes import *
from openworship.model.tables import *

def init_model(engine):
    """
    Call me before using any of the tables or classes in the model
    """
    session = sessionmaker(autocommit=False, bind=engine)
    meta.engine = engine
    meta.Session = scoped_session(session)

# This is the mapping section
# - Classes are mapped to tables
# - Relationships between models are defined
mapper(Member, members_table,
       properties={'roles': relation(Role, backref='members',
                                           secondary=members_roles_table)})
mapper(Role, roles_table,
       properties={'permissions': relation(Permission, backref='roles',
                                           secondary=permissions_roles_table)})
mapper(Permission, permissions_table)
